package subraSoft.fenix.model.authentication.domain;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Version;

import subraSoft.centaurus.model.domain.CenDefaultDO;

/**
 * Perfil.
 * 
 * @author christian
 */
@Entity
@Table(name="FEN_PERFIL")
public class FenPerfilDO extends CenDefaultDO implements Serializable
{
	private static final long serialVersionUID = 1L;
	private String id;
	private String descripcion;
	private List<FenObjSecDO> objetosSeg;
	private List<FenUsuarioDO> usuarios;
	private Integer version;

	@Id
	@Column(name="PER_ID")
	public String getId() {
		return id;
	}
	
	public void setId(String id) {
		this.id = id;
	}

	public void setObjetosSeg(List<FenObjSecDO> objetosSeg) {
		this.objetosSeg = objetosSeg;
	}

	@ManyToMany(
			targetEntity=FenObjSecDO.class,
			cascade={CascadeType.PERSIST, CascadeType.MERGE}
	)
	@JoinTable(
			name="FEN_PERFIL_OBJ_SEG",
			joinColumns= @JoinColumn(name="PER_ID"),
			inverseJoinColumns=@JoinColumn(name="OBJ_SEG_ID")
	)
	public List<FenObjSecDO> getObjetosSeg() {
		return objetosSeg;
	}

	@Column(name="PER_DESCRIPCION")
	public String getDescripcion() {
		return descripcion;
	}
	
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	
	@OneToMany(mappedBy="perfil")
	public List<FenUsuarioDO> getUsuarios() {
		return usuarios;
	}

	public void setUsuarios(List<FenUsuarioDO> usuarios) {
		this.usuarios = usuarios;
	}

	public void setVersion(Integer version) {
		this.version = version;
	}

	@Version
	@Column(name="PER_VERSION")
	public Integer getVersion() {
		return version;
	}
	

}
